package yaner.hotel.manager.common.vo;

import lombok.Data;
import yaner.hotel.manager.common.enums.ResponseCodeEnums;

import java.io.Serializable;

@Data
public class ResponseVo<T> implements Serializable {
    private static final long serialVersionUID = 1L;
    // 状态码，例如：200表示成功，500表示服务器错误等
    private Integer code;

    // 消息，用于描述响应的状态或错误信息
    private String message;

    // 数据，API返回的实际数据
    private T data;

    // 提供一个静态方法用于快速创建成功的响应
    public static <T> ResponseVo<T> success(T data) {
        ResponseVo<T> responseVO = new ResponseVo<>();
        responseVO.setCode(ResponseCodeEnums.SUCCESS.getCode());
        responseVO.setMessage("success");
        responseVO.setData(data);
        return responseVO;
    }

    // 提供一个静态方法用于快速创建失败的响应
    public static <T> ResponseVo<T> error(Integer code, String message) {
        ResponseVo<T> responseVO = new ResponseVo<>();
        responseVO.setCode(code);
        if (code == null) {
            responseVO.setCode(ResponseCodeEnums.UN_ERROR.getCode());
        }
        responseVO.setMessage(message);
        // 通常失败响应不包含数据，但你可以根据需求来决定是否设置data字段
        return responseVO;
    }
}
